let socket = null;
const url = 'wss://example.com/socket';
let reconnectTimeout = null;
const reconnectInterval = 5000; // 5秒
const maxReconnectAttempts = 10; // 最大重连次数
let reconnectAttempts = 0;

function connect() {
	if (socket) {
		// 如果已经有一个 WebSocket 实例，则先关闭它
		socket.close();
	}

	socket = new WebSocket(url);

	socket.onopen = function(event) {
		console.log('WebSocket connection opened.');
		reconnectAttempts = 0; // 重置重连次数
		// 在这里可以发送数据或执行其他操作
	};

	socket.onmessage = function(event) {
		console.log('Received message:', event.data);
		// 处理接收到的数据
	};

	socket.onclose = function(event) {
		console.log('WebSocket connection closed. Code:', event.code, 'Reason:', event.reason);
		if (reconnectAttempts < maxReconnectAttempts) {
			reconnectAttempts++;
			console.log(`Reconnecting attempt ${reconnectAttempts}...`);
			// 设置一个超时来尝试重新连接
			reconnectTimeout = setTimeout(connect, reconnectInterval);
		} else {
			console.log('Max reconnect attempts reached. Stopping reconnection.');
		}
	};

	socket.onerror = function(error) {
		console.error('WebSocket error:', error);
		// 处理错误，可以根据需要关闭并重新连接
		socket.close();
		// 如果需要，可以在这里立即尝试重新连接，而不是等待 onclose 事件
		// connect(); // 注意：这可能会导致在短时间内多次尝试连接
	};
}

// 初始连接
connect();

// 手动关闭 WebSocket 的函数
function closeSocket() {
	if (socket) {
		console.log('Closing WebSocket...');
		socket.close(1000, 'Manually closed by user');
		// 如果有一个正在进行的重新连接超时，可以清除它
		if (reconnectTimeout) {
			clearTimeout(reconnectTimeout);
			reconnectTimeout = null;
		}
	}
}